package ar.edu.utn.frba.disenio.aterrizar;

import java.util.ArrayList;
import java.util.Collection;

import ar.edu.utn.frba.disenio.aterrizar.*;

import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;

public class TestFlexible {

	private Internacional inter = new Internacional();
	private Norteamericano norte = new Norteamericano();
	private Latinoamericano lati = new Latinoamericano();
	private Flexible flexi;
	
	private Collection<String> strings_validos = new ArrayList<String>();
	
	
	@Before
	public void initializeFormato(){
		Collection<Formato> formatos = new ArrayList<Formato>();
		
		formatos.add(lati);
		formatos.add(norte);
		formatos.add(inter);
		
		flexi = new Flexible(formatos);	
	}
	
	
	@Before
	public void initializeStringsValidos(){
		strings_validos.add("12-05-2012");
		strings_validos.add("06/11/2012");
		strings_validos.add("2012-12-15");
	}

	
	@Test
	public void testDondeParseaConCadaFormato(){
		
		for(String unString: strings_validos){
			assertTrue("Para parsear el string debe matchear con alguno de los formatos de la coleccion formato de Flexible",!flexi.parsear(unString).equals(null));
		}
		
	}
	
	
	@Test
	public void testDondeParseaConAlgunFormato(){
		
		String unString = "06/11/2012";
		assertTrue("Para parsear el string debe matchear con alguno de los formatos de la coleccion formato de Flexible",!flexi.parsear(unString).equals(null));
		
	}
	
	
	@Test(expected=NoSePuedeParsearConNingunFormatoException.class)
	public void testDondeNoParseaConNingunFormato(){
		
		String unString = "12 4- 8-  ";
		flexi.parsear(unString);
		
	}
	
	
	@Test(expected=NoHayFormatosEnFlexibleException.class)
	public void testConColeccionDeFormatosVacia(){
		
		String unString = "12-12-1212";
		flexi.setFormatos(null);
		flexi.parsear(unString);
		
	}
	
}

